﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Commonality
{
    /// <summary>
    /// 统一返回
    /// </summary>
    public class ResultReposeDTO
    {
        //枚举
        public ResponseResultCode code { get; set; } = ResponseResultCode.Success;
#pragma warning disable CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        private string message;
#pragma warning restore CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        public string Message {
            get
            {
                if (string.IsNullOrEmpty(message))
                {
                    message = GetStateCodeMessage();
                }
                return message;
            }
            set
            {
                message = value;
            }

        }
        public dynamic? Data { get; set; }
        public string GetStateCodeMessage()
        {
            var t = typeof(ResponseResultCode);
            var fs = t.GetField(this.code.ToString());
#pragma warning disable CS8602 // 解引用可能出现空引用。
            var o = fs.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault();
#pragma warning restore CS8602 // 解引用可能出现空引用。
            if (o != null)
            {
#pragma warning disable CS8603 // 可能返回 null 引用。
                return ((DisplayAttribute)o).Name;
#pragma warning restore CS8603 // 可能返回 null 引用。
            }
            return fs.Name;
        }
    }
}
